﻿<?		
	//  Configurações do Script
	// ==============================
	$_SG['abreSessao'] = true;         // Inicia a sessão com um session_start()?
	
	$_SG['caseSensitive'] = false;     // Usar case-sensitive? Onde 'thiago' é diferente de 'THIAGO'
	
	$_SG['validaSempre'] = true;       // Deseja validar o usuário e a senha a cada carregamento de página?
	// Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado.
	
	$_SG['paginaLogin'] = 'index.html'; // Página de login
	
	$_SG['tabela1'] = 'professores';       // Nome da tabela onde os professores são salvos
	$_SG['tabela2'] = 'alunos';       // Nome da tabela onde os alunos são salvos
	$_SG['tabela3'] = 'administradores';       // Nome da tabela onde os administradores são salvos
	
	
	// Verifica se precisa iniciar a sessão
	if ($_SG['abreSessao'] == true) {
		session_start();
	}
	
	/**
	* Função que valida um usuário e senha
	*
	* @param string $usuario - O usuário a ser validado
	* @param string $senha - A senha a ser validada
	*
	* @return bool - Se o usuário foi validado ou não (true/false)
	*/
	function validaUsuario($usuario, $senha) {
	global $_SG;
	include "config.php";
	
	$cS = ($_SG['caseSensitive']) ? 'BINARY' : '';
	
	// Usa a função addslashes para escapar as aspas
	$nusuario = addslashes($usuario);
	$nsenha = addslashes($senha);
	
	// Monta uma consulta SQL (query) para procurar um usuário
	$sql = "SELECT id, nome FROM ".$_SG['tabela1']." WHERE usuario = '$nusuario' AND senha = '$nsenha' LIMIT 1";
	$query = $db->query($sql);
	$resultado1 = $query->fetch(PDO::FETCH_ASSOC);
	
	$sql2 = "SELECT id, nome, verificado FROM ".$_SG['tabela2']." WHERE usuario = '$nusuario' AND senha = '$nsenha' LIMIT 1";
	$query2 = $db->query($sql2);
	$resultado2 = $query2->fetch(PDO::FETCH_ASSOC);
	
	$sql3 = "SELECT id, nome FROM ".$_SG['tabela3']." WHERE usuario = '$nusuario' AND senha = '$nsenha' LIMIT 1";
	$query3 = $db->query($sql3);
	$resultado3 = $query3->fetch(PDO::FETCH_ASSOC);
	
	
	
	// Verifica se encontrou algum registro
	if (empty($resultado1) && empty($resultado2) && empty($resultado3)) {
		// Nenhum registro foi encontrado => o usuário é inválido
		return false;
	
	} else {
	// O registro foi encontrado => o usuário é valido
		if(!empty($resultado1)){
			// Definimos dois valores na sessão com os dados do usuário
			$_SESSION['usuarioID'] = $resultado1['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL
			$_SESSION['usuarioNome'] = $resultado1['nome']; // Pega o valor da coluna 'nome' do registro encontrado no MySQL
			$_SESSION['nivel'] = 'professor';
		}else{
			if(!empty($resultado2)){
				if($resultado2['verificado'] != 1){
					echo"<script language='javascript' type='text/javascript'>
					alert('Seu cadastro ainda não foi autorizado');window.location.href='alunoNaoAutorizado.php';</script>";
					die();
				}else{
					$_SESSION['usuarioID'] = $resultado2['id']; 
					$_SESSION['usuarioNome'] = $resultado2['nome']; 
					$_SESSION['nivel'] = 'aluno';
				}
			}
			else{
				if(!empty($resultado3)){
					$_SESSION['usuarioID'] = $resultado3['id']; 
					$_SESSION['usuarioNome'] = $resultado3['nome']; 
					$_SESSION['nivel'] = 'administrador';
				}
				else{
					expulsaVisitante();
				}
			}
		}
		// Verifica a opção se sempre validar o login
		if ($_SG['validaSempre'] == true) {
			// Definimos dois valores na sessão com os dados do login
			$_SESSION['usuarioLogin'] = $usuario;
			$_SESSION['usuarioSenha'] = $senha;
		}
		
		return true;
		}
	}
	
	/**
	* Função que protege uma página
	*/
	function protegePagina() {
		global $_SG;
		
		if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
			// Não há usuário logado, manda pra página de login
			expulsaVisitante();
		} 
		else if (isset($_SESSION['usuarioID']) OR isset($_SESSION['usuarioNome'])) {
			// Há usuário logado, verifica se precisa validar o login novamente
			if ($_SG['validaSempre'] == true) {
				// Verifica se os dados salvos na sessão batem com os dados do banco de dados
				if (!validaUsuario($_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) {
					// Os dados não batem, manda pra tela de login
					expulsaVisitante();
				}
			}
		}
	}
	
	/**
	* Função para expulsar um visitante
	*/
	function expulsaVisitante() {
	global $_SG;
	
	// Remove as variáveis da sessão (caso elas existam)
	unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'],
	$_SESSION['nivel'],$_SESSION['edita'],$_SESSION['tema']);
	
	// Manda pra tela de login
	header("Location: ".$_SG['paginaLogin']);
	}
?>